package com.xxjh.brs.ftp.common.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;

/**
 * @author CHENCHEN
 * @title FTP工具类
 * @company 新兴际华科技（天津）有限公司
 * @create 2024-07-03 19:21
 */
public class FileUtil {

    private static final Logger log = LoggerFactory.getLogger(FileUtil.class);

    /**
     * 拼接文件路径。
     *
     * @param remoteDirPath  路径。
     * @param fileName    下层目录名称。
     */
    public static String getRemoteFilePath(String remoteDirPath, String fileName){
        String remoteFilePath;
        if (remoteDirPath.isEmpty() || remoteDirPath.endsWith("/")) {
            remoteFilePath = remoteDirPath + fileName;
        } else {
            remoteFilePath = remoteDirPath + "/" + fileName;
        }
        return remoteFilePath;
    }


    /**
     * 递归删除指定文件夹内的所有文件和子文件夹。
     *
     * @param folder 要删除内容的文件夹对象。
     * @return true 如果删除成功或文件夹原本就不存在，false 如果删除过程中发生错误。
     */
    public static boolean deleteFolderContents(File folder) {
        if (folder == null || !folder.exists()) {
            log.info("The specified folder does not exist: " + folder.getAbsolutePath());
            return true; // 如果文件夹不存在，可以认为本次操作“成功”，因为它没有实际执行删除
        }
        File[] files = folder.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    if (!file.delete()) {
                        log.info("Failed to delete file: " + file.getAbsolutePath());
                        return false;
                    }
                    log.info("Deleted file: " + file.getAbsolutePath());
                } else if (file.isDirectory()) {
                    deleteFolderContents(file);
                    log.info("Deleted folder: " + file.getAbsolutePath());
                }
            }
        }
        // 在所有子项删除后，尝试删除文件夹自身
        if (!folder.delete()) {
            log.info("Failed to delete folder: " + folder.getAbsolutePath());
            return false;
        }
        return true;
    }

}
